// app.js
App({
  onLaunch: function () {
    this.globalData = {
      // env 参数说明：
      //   env 参数决定接下来小程序发起的云开发调用（wx.cloud.xxx）会默认请求到哪个云环境的资源
      //   此处请填入环境 ID, 环境 ID 可打开云控制台查看
      //   如不填则使用默认环境（第一个创建的环境）
      env: "cloud1-9gkdwcc04af675fe",
      // 初始化登录状态和用户信息
      isLoggedIn: false,
      userInfo: null
    };
    if (!wx.cloud) {
      console.error("请使用 2.2.3 或以上的基础库以使用云能力");
    } else {
      wx.cloud.init({
        env: this.globalData.env,
        traceUser: true,
      });
    }
    
    // 小程序启动时主动触发登录流程
    this.login();
  },
  // 微信登录函数
  login: function() {
    const app = this;
    
    // 检查用户是否已经登录
    wx.checkSession({
      success: function() {
        // 已登录状态，尝试获取用户信息
        const userInfo = wx.getStorageSync('userInfo');
        if (userInfo) {
          app.globalData.userInfo = userInfo;
          app.globalData.isLoggedIn = true;
          console.log('用户已登录，直接获取缓存的用户信息:', userInfo);
          // 调用回调函数（如果存在）
          if (app.loginCallback) {
            app.loginCallback();
          }
        } else {
          app.doLogin();
        }
      },
      fail: function() {
        // 登录状态已过期，重新登录
        app.doLogin();
      }
    });
  },
  
  // 执行登录操作
  doLogin: function() {
    const app = this;
    
    // 调用微信登录接口
    wx.login({
      success: res => {
        if (res.code) {
          // 发送 res.code 到后台换取 openId, sessionKey, unionId
          wx.cloud.callFunction({
            name: 'login',
            data: {},
            success: res => {
              console.log('登录成功', res.result);
              const openid = res.result.openid;
              
              // 只存储openid，不自动获取用户信息
              const userInfo = {
                openid: openid
              };
              
              // 存储用户信息到全局和本地缓存
              app.globalData.userInfo = userInfo;
              app.globalData.isLoggedIn = true;
              wx.setStorageSync('userInfo', userInfo);
              // 调用回调函数（如果存在）
              if (app.loginCallback) {
                app.loginCallback();
              }
            },
            fail: err => {
              console.error('调用login云函数失败', err);
            }
          });
        } else {
          console.error('登录失败！' + res.errMsg);
        }
      },
      fail: err => {
        console.error('wx.login失败', err);
      }
    });
  },
  
  // 添加获取用户信息的方法，供页面调用
  getUserProfile: function(callback) {
    const app = this;
    wx.getUserProfile({
      desc: '用于完善用户资料',
      success: (userRes) => {
        console.log('获取用户信息成功', userRes);
        const userInfo = {
          openid: app.globalData.userInfo.openid,
          nickName: userRes.userInfo.nickName,
          avatarUrl: userRes.userInfo.avatarUrl,
          gender: userRes.userInfo.gender,
          province: userRes.userInfo.province,
          city: userRes.userInfo.city,
          country: userRes.userInfo.country
        };
        
        // 存储用户信息到全局和本地缓存
        app.globalData.userInfo = userInfo;
        wx.setStorageSync('userInfo', userInfo);
        if (callback) callback(userInfo);
      },
      fail: (err) => {
        console.log('获取用户信息失败', err);
        if (callback) callback(null);
      }
    });
  }
});
